<?php
/************************************ Dimox breadcrumbs ************************************/
// breadcrumbs -----------------------------------------------------------------------------
function dimox_breadcrumbs() {
 
  $delimiter = '&raquo;';
  $name = __( "Home Page", "sofa_suppastore" );
  $currentBefore = '';
  $before = '';
  $after = '';
  $currentAfter = '';
  global $wp_query;
  global $wp;
 
  if ( !is_home() && !is_front_page() || is_paged() ) {
 
    echo '<div id="breadpitcrumbz" class="grid_12"><div id="crumbs">';
 
    global $post;
    $homeLink = home_url();
    echo '<a href="' . $homeLink . '">' . __( "Home Page", "sofa_suppastore" ) . '</a> ' . $delimiter . ' ';
 
    if ( is_category() ) {
      $cat_obj = $wp_query->get_queried_object();
	  
      $thisCat = $cat_obj->term_id;
      $thisCat = get_category($thisCat);
      $parentCat = get_category($thisCat->parent);
      if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
      echo $before . __( "Archive by Category", "sofa_suppastore" ) . ' "' . single_cat_title('', false) . '"' . $after;
 
    } elseif ( is_day() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
      echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
      echo $before . get_the_time('d') . $after;
 
    } elseif ( is_month() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
      echo $before . get_the_time('F') . $after;
 
    } elseif ( is_year() ) {
      echo $before . get_the_time('Y') . $after;
 
    } elseif ( is_single() && !is_attachment() ) {
      if ( get_post_type() != 'post' ) {
		/* 
		BY DAMEER, Sofarider
		-- handle breadcrumbs for custom post type
		*/
		$post_taxo_obj = array_reverse( wp_get_object_terms( $post->ID, 'catalog' ) ); // reverse
		ksort( $post_taxo_obj ); // preserve keys
		$pto_len = count( $post_taxo_obj );
		$count_p = 0;
		foreach( $post_taxo_obj as $pto ) {
			echo '<a href="' . get_term_link( $pto->slug, 'catalog' ) . '">' . $pto->name . '</a>';
			if( ( $count_p + 1 ) < $pto_len ) echo ', ';
			$count_p ++;
		}
		echo ' ' . $delimiter . ' ' . $post->post_title;
		
      } else {
        $cat = get_the_category(); $cat = $cat[0];
        echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
        echo $before . get_the_title() . $after;
      }
 
    } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_search() && !is_tag() ) {
		/* 
		BY DAMEER, Sofarider
		-- handle breadcrumbs for taxonomy term
		*/
		$split_request = explode( '/', $wp->request );
		if( count( $split_request ) > 1 ) {
			$main_tax = $split_request[ 0 ];
			$curr_trm = $split_request[ 1 ];
			// get taxonomy object
			$main_tax_terms = get_terms( $main_tax );
			// find corresponding
			$obj_term = NULL;
			foreach( $main_tax_terms as $o ) { // loop through all
				if( $curr_trm == $o->slug ) {
					$obj_term = $o; // get entire object
					break; // save time when found
				}
			}
			echo $before . $obj_term->name . $after;
		}
 
    } elseif ( is_attachment() ) {
		/* 
		BY DAMEER, Sofarider
		-- bug fix for Page attachment
		*/
      $parent = get_post( $post->post_parent );
	  $parent_posttype = $parent->post_type; // missing parent post type
	  
	  if( $parent_posttype == 'post' ) {
		  $cat = get_the_category( $parent->ID ); $cat = $cat[ 0 ];
		  echo get_category_parents( $cat, TRUE, ' ' . $delimiter . ' ' );
		  echo '<a href="' . get_permalink( $parent ) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
		  echo $before . get_the_title() . $after;
	  } elseif( $parent_posttype == 'page' ) {
		  if( !$post->post_parent ) echo $before . get_the_title() . $after;
		  elseif( $post->post_parent ) {
			  $parent_id = $post->post_parent;
			  $breadcrumbs = array();
			  while( $parent_id ) {
				$page = get_page( $parent_id );
				$breadcrumbs[] = '<a href="' . get_permalink( $page->ID ) . '">' . get_the_title( $page->ID ) . '</a>';
				$parent_id = $page->post_parent;
			  }
			  $breadcrumbs = array_reverse( $breadcrumbs );
			  foreach( $breadcrumbs as $crumb ) echo $crumb . ' ' . $delimiter . ' ';
			  echo $before . get_the_title() . $after;
		  }
	  }
 
    } elseif ( is_page() && !$post->post_parent ) {
      echo $before . get_the_title() . $after;
 
    } elseif ( is_page() && $post->post_parent ) {
      $parent_id  = $post->post_parent;
      $breadcrumbs = array();
      while ($parent_id) {
        $page = get_page($parent_id);
        $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
        $parent_id  = $page->post_parent;
      }
      $breadcrumbs = array_reverse($breadcrumbs);
      foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
      echo $before . get_the_title() . $after;
 
    } elseif ( is_search() ) {
      echo $before . __( "Search results for", "sofa_suppastore" ) . ' "' . get_search_query() . '"' . $after;
 
    } elseif ( is_tag() ) {
      echo $before . __( "Posts tagged", "sofa_suppastore" ) . ' "' . single_tag_title('', false) . '"' . $after;
 
    } elseif ( is_author() ) {
       global $author;
      $userdata = get_userdata($author);
      echo $before . __( "Articles posted by", "sofa_suppastore" ) . ' ' . $userdata->display_name . $after;
 
    } elseif ( is_404() ) {
      echo $before . __( "Error", "sofa_suppastore" ) . ' 404' . $after;
    }
 
    if ( get_query_var('paged') ) {
      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
      echo __( "Page", "sofa_suppastore" ) . ' ' . get_query_var( 'paged' );
      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
    }
 
    echo '</div></div>';
 
  }
}